package it.fantacalcio.spring.service;

import java.util.List;

import it.fantacalcio.hibernate.dao.ArgomentoDAO;
import it.fantacalcio.hibernate.sessionfactory.HibernateSessionFactory;
import it.fantacalcio.model.Argomento;
import it.fantacalcio.model.Categoria;

import org.hibernate.Transaction;

public class ArgomentoServiceImpl implements ArgomentoService {
	
	private ArgomentoDAO argomentoDAO;
	
	public ArgomentoDAO getArgomentoDAO() {
		return argomentoDAO;
	}

	public void setArgomentoDAO(ArgomentoDAO argomentoDAO) {
		this.argomentoDAO = argomentoDAO;
	}
	
	//----------------------------------------------------------------------------------

	@Override
	public int salva(Argomento argomento) throws Exception {
		if(argomento==null){
			return -1;
		}
		try{
			Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
			argomentoDAO.save(argomento);
			tx.commit();
		}catch(Exception e){
			e.printStackTrace();
			return -2;
		}
		return 1;
	}
	
	@Override
	public int cancella(Argomento argomento) throws Exception {
		if(argomento==null || argomento.getId()<1){
			return -1;
		}
		try{
			Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
				argomentoDAO.delete(argomento);
			tx.commit();
		}catch(Exception e){
			e.printStackTrace();
			return -2;
		}
		return 1;
	}

	@Override
	public Argomento get(Long id) throws Exception {
		if(id<1){
			return null;
		}
		Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
		Argomento argomento = argomentoDAO.get(id);
		tx.commit();
		return argomento;
	}
	
	@Override
	public List<Argomento> list() throws Exception {
		Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
			List<Argomento> result=argomentoDAO.list();
		tx.commit();
		return result;
	}
	
	@Override
	public List<Argomento> listaPerCategoria(Categoria categoria)
			throws Exception {
		Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
		List<Argomento> result=argomentoDAO.listaPerCategoria(categoria);
		tx.commit();
		return result;
	}

}
